package com.study.mike.common.utils;

import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.symmetric.SymmetricAlgorithm;
import cn.hutool.crypto.symmetric.SymmetricCrypto;
import com.study.mike.common.constants.Constant;

import java.nio.charset.StandardCharsets;

/**
 * @author James
 */
public class EncryptUtils {
    /**
     * AES加密要求key必须要128个比特位（这里需要长度为16，否则会报错）
     */
    private static final String ALGORITHMSTR = "AES/ECB/PKCS5Padding";
    private static final String KEY = "Hu5srtN8SDrtg87w";
    private static final String KeyOne = Constant.AuthSign.key;
    private static final SymmetricCrypto aes = new SymmetricCrypto(SymmetricAlgorithm.AES, KEY.getBytes(StandardCharsets.UTF_8));

    /**
     * aes加密，在aes对象中，使用了固定的key值
     *
     * @param content 明文
     * @return 密文
     */
    public static String aesEncrypt(String content) {
        if (StrUtil.isNotBlank(content)) {
            return java.util.Base64.getEncoder().encodeToString(aes.encrypt(content));
        }
        return null;
    }

    /**
     * aes解密，在aes对象中，使用了固定的key值
     *
     * @param content 密文
     * @return 明文
     */
    public static String aesDecrypt(String content) {
        // 若遇到解密失败的数据 不做处理
        if (StrUtil.isNotBlank(content)) {
            try {
                byte[] decode = java.util.Base64.getDecoder().decode(content);
                return aes.decryptStr(decode, StandardCharsets.UTF_8);
            } catch (Exception e) {
                return content;
            }
        }
        return null;
    }
}
